package edu.gdkm.iodemo;

import java.io.*;

public class FileIODemo {
    public static void main(String[] args) {
        FileIODemo fileIODemo = new FileIODemo();
        File filein = new File(".\\doc\\ershidabaogao.txt");
//        fileIODemo.readFileByFr(file);
//        fileIODemo.readFileByBf(file);
        File fileout = new File(".\\doc\\a.txt");
//        fileIODemo.writreFile(fileout);
        fileIODemo.copyFile(filein,fileout);
    }
    public void readFileByFr(File file){
        try {
            //文件字符输入流，可以通过文件的路径直接生成，也可以通过File对象生成，
            // 需要捕获FileNotFoundException异常
            //FileReader fileReader = new FileReader(".\\doc\\javademo.txt");
            FileReader fileReader = new FileReader(file);
            int i;
            //Reader的read方法，返回字符的int值，可以通过char强制转换为字符
            //如果读取到文件末尾，返回-1，可以以此判断该文件是否已经读取完成
            while ((i=fileReader.read())>0){
                System.out.print((char)i);
            }
            System.out.println();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    public void readFileByBf(File file){
        try {
            FileReader fileReader = new FileReader(file);
            BufferedReader bf = new BufferedReader(fileReader);
            String s;
            //可以使用BufferedReader实现逐行读取
            while((s=bf.readLine())!=null)
            System.out.println(s);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    //编写一个程序，创建一个数据文件a.txt，并通过FileWrite对象向其中输出整数1至100。
    public void writreFile(File file){
        try {
            FileWriter fileWriter = new FileWriter(file);
            for(int i=1;i<=100;i++){
                fileWriter.write(i+",");
            }
            fileWriter.flush();//将输出流缓存中的数据写入文件
            //fileWriter.close();//将输出流缓存中的数据写入文件，并关闭输出流
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    //文件复制。将filein的内容复制到fileout中
    public void copyFile(File filein,File fileout){
        try {
            FileReader fileReader = new FileReader(filein);
            BufferedReader bf = new BufferedReader(fileReader);
            FileWriter fileWriter = new FileWriter(fileout);
            String s;
            //可以使用BufferedReader实现逐行读取
            while((s=bf.readLine())!=null){
                fileWriter.write(s+"\n");
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}
